Bitext 是一間主攻自然語言處理(Natural Language Processing NLP)的新創,他們的產品主要是讓機器能夠讀懂人類的文字,比方說判斷一句話是褒義還是貶義、判斷詞性、找出關鍵字,甚至是重寫句子。
我一直以來都蠻想嘗試類似的主題,當提到人工智慧 AI 的時候,NLP 是一大重點。但不管是 AI 或 NLP,都聽起來離我非常遙遠,作為前端新手,很難在這些看起來高深的詞彙裡找到自己面對它們的方法,不知道該怎麼利用這些東西。
今天找到這個 API,雖然他的語言處理沒有支援中文,但還是相當有趣感覺可以做很多事,正好跟大家分享一下。
先來申請一個帳號:
申請完之後,就可以拿到 API Key 了。進入 Bitext API 文件頁面來研究一下。
他們的文件也是挺簡陋的。
基本上,Bitext 提供的服務分成兩種:
(這邊都是一些語意處理的專有名詞,我就不試圖翻譯了)
**POS Tagging :**根據前後文判斷標註詞性
**Phrase Extraction :**輸入一個句子然後回傳句子的各部分組成,把有意義的字歸類在一起。比方說把 “You should eat your dinner” 分成 ”You(noun), should eat(verb), your dinner(noun)” 而不是 “You should, eat your, dinner”
**Entities:**抓取文字裡的名字、人物、時間、地點等
**Sentiment Analysis:**判斷一個句子或片語將它們跟文字的情緒連結,判斷寫作者的想法是正面還是負面的
聊天機器人服務
由於對 NLP 並不熟悉,所以我把他的 Demo 玩過一遍,比較清楚知道各功能可以幹嘛。
都玩過一遍之後,我決定要使用 POS Tagging
來實作。先翻到他的文件區域。
簡單來說,想要利用 Bitext 的服務,你必須先使用 HTTP Method
中的 POST
把你的資料傳給他們,他們會回傳一個 resultid
給你,然後你再拿這個 id 用 GET
的方法把分析結果抓下來。
Base URL 是 "https://svc02.api.bitext.com/postagging/``"
Authentication 要被放在 Header裡面,所以使用 .setRequestHeader()
來放:
xhr.setRequestHeader(
"Authorization",
"bearer [api Key放這邊]"
);
xhr.setRequestHeader(
"Content-Type",
"application/json"
);
而要傳進對方服務器的資料,要放在 request body 裡,這邊要注意的是要放進去的是JSON
而不是 Object
,所以要加上 JSON.stringify(data)
轉成字串。
一個 POST
Request:
var url = "https://svc02.api.bitext.com/postagging/";
var data = {
language: "eng",
text:
"I love You"
};
var result;
function makeRequest() {
xhr = new XMLHttpRequest();
xhr.onload = function() {
var response = JSON.parse(this.responseText);
console.log(response);
result = response.resultid;
};
xhr.open("POST", url, true);
xhr.setRequestHeader(
"Authorization",
"bearer 8fb4655313ae4e9d9036fdafd09cb1ca"
);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(data));
}
Response:
接著再寫一個 GET
Request:
function retriveData() {
xhr = new XMLHttpRequest();
xhr.onload = function() {
var response = JSON.parse(this.responseText);
console.log(response);
};
xhr.open("GET", url + result, true);
xhr.setRequestHeader(
"Authorization",
"bearer 8fb4655313ae4e9d9036fdafd09cb1ca"
);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send();
}
Response:
這樣就完成啦。
最後成果: